#include "Evaluation.h"
using namespace std;

int Evaluation::_machineNum;
int Evaluation::_jobNum;
string Evaluation::Name;
int Evaluation::Times;
vector<vector<int>> Evaluation::_evaluateTable;

void Evaluation::SetConfig(const vector<vector<int>>& evaluateTable)
{
	_jobNum = evaluateTable.front().size();
	_machineNum = evaluateTable.size();
	_evaluateTable = evaluateTable;
}

int Evaluation::Evaluate(const Solution& solution)
{
	int processTime[Solution::MAX_SOLUTION_NUM + 5] = {0};
	for( int i = 0 ; i < _jobNum ; ++i ){
		for( int j = 1 ; j <= _machineNum ; ++j ){
			processTime[j] = max( processTime[j-1], processTime[j] ) + _evaluateTable[j-1][solution.getElementAt(i)];
		}
	}
	return processTime[_machineNum];
}